#ifndef _AUDIO_SR_H_
#define _AUDIO_SR_H_

#include "esp_afe_sr_iface.h"       //afe_config_t
#include "esp_afe_sr_models.h"      //afe_config_init
#include "esp_afe_aec.h"
#include "Com_Debug.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/ringbuf.h"
#include "bsp_sound.h"

typedef struct 
{
    bool is_running;
    bool is_wake;

    vad_state_t last_vad_state;

    RingbufHandle_t ringBuf;

    //直接封装进去
    esp_afe_sr_iface_t *  afe_handle;
    esp_afe_sr_data_t *afe_data;

    //回调函数，这里就需要加指针
    void (*wake_cb)(void);
    void (*vad_change_cb)(vad_state_t);
}my_sr_t;

//结构体在C文件声明然后需要暴露出去给别的文件使用
extern my_sr_t my_sr;

void audio_sr_init(void);
void audio_sr_start(RingbufHandle_t ringBuf,
                    void (*wake_cb)(void),
                    void (*vad_change_cb)(vad_state_t));
#endif // _AUDIO_SR_H_